(在 application 外打开命令框创建模块)
php think make:model common/User/User
<?php
// 创建模板时自动生成
namespace app\common\model\User;

use think\Model;

class User extends Model
{
    // 设置数据表 => 用户表
    protected $table = 'pre_user';

    // 使用$appnd为数据库添加字段
    protected $appnd = [
        'sex_text',
        'avatar_cdn',
        'cover_cdn'
    ];
    // 获取器的作用是在获取数据的字段值后自动进行处理
    // 如果我们想保留Sex字段，可以通过getSexTextAttr()定义数据表中不存在的字段
    // 数据表的字段会自动转换为驼峰法SexText
    public function getSexTextAttr($value, $data)
    {
        $SexList = [0 => '保密', 1 => '男', 2 => '女'];

        //此处的$data['sex']是控制器中的$data里面的sex字段,将返回一个数字，$SexList[$data['sex']]返回该数字对应的结果
        return $SexList[$data['sex']];
        // 此时sex_text字段会存在pre_user表中，根据'sex'字段值返回相对应的值
    }
    // 头像
    public function getAvatarCdnAttr($value, $data)
    {
        // 判断一个文件是否存在如果存在就返回数据库里面的图像文件，@的意思就是不让这行代码报错
        $avatar = @is_file('.' . $data['avatar']) ? $data['avatar'] : '/static/home/res/images/avatar/default.png';
        // cdn为当前域名 调用config方法 config方法又调用了Config这个类 ,从而获取了各种参数，加上图片地址即可在视图输出图片
        $cdn = config('cdn');
        return $cdn . $avatar;
        // 通过控制器获取模板后 视图可直接输出该图片 <img src="{$LoginUser['avatar_cdn']}" >
    }
    // 封面图
    public function getCoverCdnAttr($value, $data)
    {
        $cover = @is_file('.' . $data['cover']) ? $data['cover'] : '/static/home/res/images/back_1.jpg';
        $cdn = config('cdn');
        return $cdn . $cover;
    }
}
